const { RESOURCE_IS_NOT_EXISTS } = require("../config/error-constants");
const existsService = require("../service/exists.service");
const { to } = require("../utils");

// 验证登录用户是否能对某张表某条记录操作（这条记录可能不存在，验证操作记录是否存在）
// 使用需严格命名
// 某表id=>命名为tableId
const verifyResourceExists = async (ctx, next) => {
    const keyName = Object.keys(ctx.params)[0];
    const resourceId = ctx.params[keyName];
    const resource = keyName.replace("Id", "");
    const [error, resp] = await to(existsService.resourceExists(resource, resourceId));
    if (error) {
        return ctx.app.emit("error", UNKNOWN_ERROR, ctx);
    }
    if (!resp) {
        return ctx.app.emit("error", RESOURCE_IS_NOT_EXISTS, ctx);
    }
    await next();
};

module.exports = verifyResourceExists;
